package com.kmxd.ams.client.archive;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kmxd.ams.client.archive.dto.ArchiveTypeAddDTO;
import com.kmxd.ams.client.archive.dto.ArchiveTypeEditDTO;
import com.kmxd.ams.client.archive.dto.ArchiveTypeOpenDTO;
import com.kmxd.ams.client.archive.dto.ArchiveTypeQueryDTO;
import com.kmxd.ams.client.archive.vo.ArchiveFondsVO;
import com.kmxd.ams.client.archive.vo.ArchiveTypeListVO;
import com.kmxd.ams.client.archive.vo.ArchiveTypeVO;
import com.kmxd.ams.client.archive.vo.FondsOrArchiveTypeVO;
import com.kmxd.ams.infra.archive.entity.ArchiveType;
import java.util.List;

/**
 * 门类|档案库配置主表 服务类
 *
 * @author ZuoLG
 * @since 2022-07-15
 */
public interface IArchiveTypeSvc extends IService<ArchiveType> {

  /**
   * 分页查询
   *
   * @param reqPage
   * @param req
   * @return
   */
  Page<ArchiveTypeListVO> selectPage(Page reqPage, ArchiveTypeQueryDTO req);

  /**
   * 查询列表
   *
   * @param req
   * @return
   */
  List<ArchiveTypeListVO> selectList(ArchiveTypeQueryDTO req);

  /**
   * 查询列表
   *
   * @return
   */
  List<ArchiveTypeListVO> selectListByAms();

  /**
   * 获取当前单位下所有全宗及档案库
   *
   * @param roleId
   * @return
   */
  List<ArchiveFondsVO> archTypeByCrop(Long roleId);

  /**
   * 新增
   *
   * @param req
   */
  void add(ArchiveTypeAddDTO req);

  /**
   * 获取档案库数量
   *
   * @param fondsId
   * @return
   */
  public long countArchTypeByFondsId(long fondsId);

  /**
   * 获取表名
   *
   * @param fondsId
   * @param model
   * @return
   */
  String getTableName(long fondsId, String model);

  /**
   * 修改
   *
   * @param req
   */
  void edit(ArchiveTypeEditDTO req);

  /**
   * 修改
   *
   * @param req
   */
  void openArchiveType(ArchiveTypeOpenDTO req);

  /**
   * 删除
   *
   * @param ids
   */
  void remove(String ids);

  /**
   * 查看
   *
   * @param id
   * @return
   */
  ArchiveTypeVO view(Long id);

  /**
   * 当前单位下全宗及档案库
   *
   * @return
   */
  FondsOrArchiveTypeVO getFondsOrArchiveTypeByCrop();

  /** 清除所有缓存 */
  void clearAllCache();
}
